Exposing multidimensional calculations through structured query language

ABSTRACT

Accessing results of calculations on multidimensional data using relational database statements, such as SQL commands, involves a relational database server communicating with a multidimensional database server to cause the multidimensional database server to extract, and to perform calculations on, the multidimensional data. In response to a relational database statement in a language supported by the relational server, which includes an expression of an operation on the multidimensional data in a language supported by the multidimensional server, the multidimensional server extracts the required multidimensional data, performs the requested operation (e.g., an OLAP DML operation) on the data according to the specified expression, and provides results of the multidimensional operation to the relational database server. In one embodiment, the relational server passes information to the multidimensional server that uniquely identifies the location of the particular multidimensional data in the n-dimensional objects.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of U.S. patent applicationSer. No. 10/841,941 entitled “Efficient SQL Access To MultidimensionalData”, filed May 6, 2004, which claims the benefit of priority under 35U.S.C. §119(e) from U.S. Provisional Application Ser. No. 60/469,032entitled “Techniques for Managing Multidimensional Data in a RelationalDatabase Management System (RDBMS)”, filed May 7, 2003, the disclosuresof both of which are incorporated by this reference in their entiretyfor all purposes as if fully set forth herein.

FIELD OF THE INVENTION

The present invention relates generally to database systems and, morespecifically, to techniques for exposing multidimensional calculationsthrough SQL (Structured Query Language).

BACKGROUND OF THE INVENTION

In the context of database systems, a “dimension” is a list of valuesthat provide categories for data. A dimension acts as an index foridentifying values of a variable. For example, if sales data has aseparate sales figure for each month, then the data has a MONTHdimension. That is, the data is organized by month. A dimension issimilar to a key in a relational database. Data that is organized by twoor more dimensions is referred to as “multidimensional data”.

Any item of data within a multidimensional variable can be uniquely andcompletely selected by specifying one member from each of the variable'sdimensions. For example, if a sales measure is dimensioned by MONTH,PRODUCT, and MARKET, specifying “January” for the MONTH dimension,“Stereos” for the PRODUCT dimension, and “Eastern Region” for the MARKETdimension uniquely specifies a single value of a measure. Amultidimensional variable can be conceptually thought of as anN-dimensional array, where N is the number of dimensions of thevariable, and where each value in the array may be accessed byspecifying one dimension key value for each dimension (e.g. MDVar(dim1,dim2, dim3, . . . , dimN)). Thus, dimensions offer a concise andintuitive way of organizing and selecting data for retrieval, updating,and performing calculations.

Multidimensional arrays with 2 and 3 dimensions may be depicted visuallyas grids and cubes, respectively. For convenience, it has becomecustomary to refer to the conceptual multidimensional arrays thatcorrespond to multidimensional variables as “multidimensional cubes” (orsimply “cubes”) regardless of how many dimensions they possess. Hence, amultidimensional data cube is a set of n-dimensional data objects.Further, each multidimensional value is said to belong to a “cell” ofthe cube, where the address of the cell is the set of dimension keyvalues (one per dimension) that correspond to the multidimensional valuecontained therein.

For the purpose of explanation, the multidimensional value that belongsto a cell shall be referred to as the “cell value” of that cell. Cellvalues may include base measure values, where a measure is a type ofdata (e.g., sales), or aggregated measure values, such as a summation,average, minimum value, maximum value, and the like. For example, a cellmight contain a value representing a summation of sales in dollars for aparticular product in a particular time period in a particular market,where “sales” is the measure and summation is the aggregation function.

Multidimensional data may be stored in relational database managementsystems (“RDBMS”) or in specialized, “multidimensional” databasemanagement systems (“MDDBMS”). MDDBMSs provide structures and accesstechniques specifically designed for multidimensional data, andtherefore provide relatively efficient storage and access tomultidimensional data. However, when stored in specialized MDDBMSs, onlyapplications that are specially built to interact with those systems areable to access and manipulate the data. This is because the commandssent to the MDDBMSs have to conform to the command language supported bythe MDDBMS.

Typically, multidimensional data is associated with Online AnalyticalProcessing (OLAP), which allows users to analyze different dimensions ofmultidimensional data. Often, OLAP is used for data warehousing and, attimes, data mining. The command languages of MDDBMSs with OLAPcapabilities typically provide native support for specifying andexecuting many different OLAP DML operations, i.e., functions oroperations that can be used to manipulate multidimensional data.

When multidimensional data is stored in RDBMSs, all applications thatsupport interaction with relational databases have access to the data.Such database applications communicate with the RDBMS by submittingcommands that conform to the database language supported by the RDBMS,the most common of which is the ANSI Structured Query Language (SQL).However, the RDBMSs and SQL do not have native support for many of theOLAP DML operations.

According to one approach, multidimensional data may be stored in aMDDBMS, but accessed by sending SQL to a RDBMS. In this approach, theRDBMS interacts with the MDDBMS to access the data from the MDDBMS.Unfortunately, because the operations are initially specified in SQL tothe RDBMS, the native capabilities of the MDDBMS to perform OLAPoperations are underutilized.

Based on the foregoing, there is room for improvement in techniques forinvoking OLAP operations on multidimensional data through a RDBMS.Specifically, there is room for improvement in techniques for accessingresults of calculations involving multidimensional data using the SQL.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present invention are illustrated by way of example,and not by way of limitation, in the figures of the accompanyingdrawings and in which like reference numerals refer to similar elementsand in which:

FIG. 1 is a block diagram that illustrates an operating environment inwhich an embodiment of the invention may be implemented;

FIG. 2 is a flow diagram that illustrates a method for providingmultidimensional data calculations through a relational databasemanagement system, according to an embodiment of the invention; and

FIG. 3 is a block diagram that illustrates a computer system upon whichan embodiment of the invention may be implemented.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of embodiments of the present invention. It will beapparent, however, that embodiments of the present invention may bepracticed without these specific details. In other instances, well-knownstructures and devices are shown in block diagram form in order to avoidunnecessarily obscuring embodiments of the present invention.

Functional Overview of Embodiments

Techniques are described for accessing calculations on multidimensionaldata using relational database statements, such as SQL commands. Themultidimensional data is stored according to a multidimensional schemathat is accessible to a multidimensional database server. To access themultidimensional data, a relational database statement is submitted to arelational database server. To completely process the relationaldatabase statement, the relational database server communicates OLAP DMLcommands to the multidimensional database server to cause themultidimensional database server to extract, and to perform calculationson, the multidimensional data required by the relational databaseserver. The multidimensional database server extracts the requiredmultidimensional data, performs the requested calculations on themultidimensional data according to a specified operation (e.g., an OLAPoperation), and provides results of the multidimensional calculations tothe relational database server.

For example, a SQL statement is received by a SQL engine of a RDBMS, andthe SQL engine recognizes an OLAP_EXPRESSION function that specifies anOLAP operation on some multidimensional data stored in the relationaldatabase according to a multidimensional schema. The relational databaseserver then sends an OLAP command, supported by the native language of amultidimensional database server, to the multidimensional databaseserver. This command includes information that uniquely identifies thelocation of the particular multidimensional data in the n-dimensionalobjects, and that expresses the operation in a language or format thatis supported by the multidimensional server but not the relationalserver. In turn, the multidimensional database server executes thespecified operation on the particular data, and returns to therelational server a set of values resulting from execution of theoperation (i.e., a result set).

According to one embodiment of the invention, the relational serveraccesses, from a result set, the information that uniquely identifiesthe location of the data on which the operation operates. The result setwas previously created by the multidimensional server in response to atable function that is included in the database statement received atthe relational server, to enable the relational database server toaccess and manipulate data from the result set as if the data resided ina relational table.

The information that uniquely identifies the location of the data onwhich the operation operates effectively functions as an indexingmechanism into the multidimensional data domain. This identifyinginformation is fetched from a column of the result set and passed to themultidimensional database server. In one embodiment, the informationthat uniquely identifies the data is a mapping to one or more particulardata structures that were previously generated in response to thedatabase statement and which provide the location of data, within themultidimensional data domain (i.e., within the n-dimensional dataobjects), that is associated with a row of the result set.

Using the described technique, a database user can request, via arelational server, performance of multidimensional data operations(e.g., OLAP data manipulation operations) on multidimensional datastored in a relational database according to multidimensional schema. Inother words, the ability to explicitly specify multidimensionalcalculations is provided to users that access multidimensional datausing a relational database language, such as SQL. Furthermore, ifrelational views are used to encapsulate multidimensional data operationdescriptions, SQL-based applications that do not understand the OLAPDML-specific clauses can still be effectively used to run standard SQLstatements against these views.

The techniques described herein may be used in embodiments where themultidimensional data and schema managed by the multidimensionaldatabase server resides separate from relational data and schema managedby the relational database server. Alternatively, the multidimensionaldata may itself be stored within relational database structures managedby the relational database server. For example, the data may be storedpersistently in relational database tables, as BLOBs (Binary LargeObjects).

These techniques can be employed to extract and manipulate, via OLAP DMLoperations, multidimensional data stored in a relational database forpresentation to a relational database server, e.g., a SQL processingengine. The relational database server may perform further query andmanipulation operations on the result data set returned by themultidimensional database server, based on conventional relational SQLstatements and/or relational DML operations.

Operating Environment

FIG. 1 is a block diagram that illustrates an operating environment inwhich an embodiment of the invention may be implemented.

The operating environment includes a database server 102 and a database104. Database server (“server”) 102 comprises a combination ofintegrated software components and an allocation of computationalresources (such as memory and processes) for executing the integratedsoftware components on one or more processors, where the combination ofthe software and computational resources are used to manage a particulardatabase on behalf of clients of the server. Among other functions ofdatabase management, a database server 102 governs and facilitatesaccess to a particular database, such as database 104, by processingrequests by clients to access the database.

Database server 102 comprises a multidimensional database server 106,which is a server module that is specially built to interact withmultidimensional data in a multidimensional schema, such asmultidimensional data represented as cube 110. Multidimensional databaseserver 106 is able to interpret the multidimensional data, which, in oneembodiment, is stored as one or more LOBs or BLOBs in a relationaldatabase table. Based on techniques described herein, multidimensionaldatabase server 106 manages extraction of, and calculations upon,multidimensional data from database 104, for presentation to relationaldatabase server 108.

Database server 102 comprises a relational database server 108, which isa server module that parses, interprets and manages execution ofdatabase statements on database 104. In one embodiment, relationaldatabase server 108 comprises a SQL processor that parses, interpretsand manages execution of data queries and/or operations embodied in SQLstatements. During processing of a database statement, relationaldatabase server 108 can request multidimensional data (e.g., from cube110) and receive a return set of multidimensional data, such as datalogically structured in a result set 107, from multidimensional databaseserver 106. Relational database server 108 can further process thereturn set according to one or more SQL statements, either during thesame session with database 104 or during another session with database104 if the result set is persistently stored in the database. Relationaldatabase server 108 can directly access and operate on data in one ormore relational table 112, and can access and operate on data stored inone or more multidimensional cube 110 via multidimensional databaseserver 106.

Database 104 is communicatively coupled to server 102 and is arepository for storing data and metadata on a persistent memorymechanism, such as a set of hard disks. Such data and metadata may bestored in database 104 logically, for example, according to relationalschema, multidimensional schema, or a combination of relational andmultidimensional schema. Database 104 comprises a multidimensionalschema for one or more multidimensional cubes 110, which is an abstractdata construct that represents multidimensional data.

Database 104 comprises a relational schema for storing relationaldatabase tables such as table 112. Table 112 may store, for example,relationally managed base data as well as pre-computed aggregated data.In one embodiment, database 104 stores both multidimensional cubes 110and relational tables 112. Hence, in such an embodiment, database 104and database server 102 are part of a relational database managementsystem (RDBMS) that is capable of storing, managing and manipulatingrelational and multidimensional data and that provides structures andaccess techniques designed for multidimensional data and structures andaccess techniques designed for relational data.

However, embodiments are not limited to an operating environment inwhich both the multidimensional schema and the relational schema areintegrated into a common database 104, as depicted in FIG. 1. Rather, inone embodiment, the multidimensional schema and the relational schemaare associated with separate databases that are both ultimatelyaccessible via relational database server 102. In addition, embodimentsare not limited to an operating environment in which both themultidimensional database server 106 module and the relational databaseserver 108 module are integrated into a common database server 102, asdepicted in FIG. 1. Rather, in one embodiment, the multidimensionaldatabase server 106 and the relational database server 108 are separateservers that are communicatively coupled to each other.

Providing Calculations on Multidimensional Data Through a RelationalDatabase Management System

Multidimensional Schema

SQL-based applications can request multidimensional data fromn-dimensional data objects. In an object-relational database system, twomechanisms in the database's construction assist in facilitating suchrequests: object types and table functions.

An object type encapsulates a data structure along with the functionsand procedures needed to manipulate the data contained therein. Theindividual elements of the data structure are referred to as properties.With multidimensional data, the “real-world objects” that correspond tothe properties of an object type are measures, dimensions, hierarchies,attributes, and the like. By defining object types for groupings ofobjects, and then defining result sets of these objects, the format ofmultidimensional data is described as rows and columns to a relationaldatabase server 108 (FIG. 1), e.g., to a SQL processor of a relationaldatabase server.

One way to request multidimensional data, from n-dimensional dataobjects, that is stored according to a multidimensional schema is to usea table function. Table functions produce a collection of rows that canbe queried like a database table. For example, a table function is usedinstead of a database table name in the FROM clause of a SQL query.Table functions can be used to fetch data from objects in amultidimensional data workspace. If table functions are used inconjunction with relational views, the multidimensional source of thedata is transparent to SQL-based applications, which can then usestandard SQL statements to run against the views of the multidimensionaldata just as applications access other relational tables and views inthe relational schema.

One approach to providing management of multidimensional data using atable function is described in U.S. patent application Ser. No.10/841,941 entitled “Efficient SQL Access To Multidimensional Data”, thecontent of which is incorporated by reference in its entirety for allpurposes as if fully set forth herein. A particular table function thatmay be used to implement embodiments described in the reference isreferred to therein as the OLAP_TABLE function.

Although embodiments of the present invention are not limited to usewith the OLAP_TABLE function but may be implemented in conjunction withother similarly operating functions, embodiments described hereinutilize a mapping that, in one embodiment, is generated by execution ofthe OLAP_TABLE function. However, embodiments described herein are notlimited to use of a mapping generated by the particular OLAP_TABLEfunction because the mapping may be generated in other ways. Forpurposes of discussion herein, the mapping that is used is described inrelation to a general function that operates to extract and present, toa relational database server, particular multidimensional data fromn-dimensional data objects, in response to a relational databasestatement.

FIG. 2 is a flow diagram that illustrates a method for providingmultidimensional data calculations through a relational databasemanagement system, according to an embodiment of the invention.Performance of each and every block of FIG. 2 is not required in allembodiments of the invention; however blocks 202-212 are all depicted inFIG. 2 for reference and explanation purposes.

At block 202, a relational database statement is received, whichinvolves data from n-dimensional data objects stored according to amultidimensional schema. For example, a SQL engine of a relationaldatabase server of a RDBMS, such as relational database server 104 (FIG.1), receives a SQL statement that involves multidimensional data.

At block 204, the relational database server determines that thestatement specifies an operation on particular data from then-dimensional data objects. For example, the SQL engine of therelational database server 108 (FIG. 1) recognizes a function thatspecifies an OLAP operation or calculation on some multidimensionaldata, such as cube 110 (FIG. 1), stored according to a multidimensionalschema in n-dimensional data objects in database 104 (FIG. 1).

In one implementation, the function that specifies the OLAP operation isreferred to as the OLAP_EXPRESSION function. Thus, in this description,in reference to a function that operates as described hereafter, suchfunction will be referred to as the OLAP_EXPRESSION function. However,embodiments of the invention are not limited to use of the particularfunction referred to as OLAP_EXPRESSION function in the referencedimplementation.

OLAP_EXPRESSION Function

The OLAP_EXPRESSION function, and any similarly functioning function,allows for execution of OLAP-type DML operations (also referred to as“expressions”) in the multidimensional data domain. Hence, custommeasures can be generated using the OLAP_EXPRESSION function in a SELECTclause of a relational database statement. Furthermore, in addition togenerating custom measures, the OLAP_EXPRESSION function can be used inWHERE and ORDER BY clauses to modify the result set of the SELECTclause.

A function used for providing results of an operation (e.g.,calculations) on multidimensional data to a relational database server,such as the OLAP_EXPRESSION function, includes at least two inputparameters: (1) identification of a column of a table [e.g., a“row-to-cell” column of the result set 107 (FIG. 1)], in whichinformation that uniquely identifies the location of particularmultidimensional data that is associated with a row is logically stored,where the information is effectively a mapping of the row to the storagelocation of the particular multidimensional data within themultidimensional data domain, i.e., the n-dimensional data objects; and(2) a representation (i.e., an expression) of the operation that is tobe performed on the particular multidimensional data. In effect, theinformation that uniquely identifies the location of particularmultidimensional data that is associated with a row sets up the contextfor evaluation of the specified operation on data associated with thatrow.

As mentioned, one way to generate the mapping is by executing a function(e.g., the OLAP_TABLE function) that operates to extract and present, toa relational database server, particular multidimensional data fromn-dimensional data objects. In one embodiment, as part of the extractionand presentation process, the function may, if specified, build one ormore data structures that are used to map rows of a relational table orview to n-dimensional data objects from which the rows were derived, andpopulate the row-to-cell column of the result set with a representationof the mapping for each row. Therefore, these mappings are available forexecution of the OLAP_EXPRESSION function, which uses the representationof the mapping for each row to traverse through the appropriate datastructures to arrive at the particular n-dimensional data object(s) thatare associated with data in the row.

With a multidimensional data structure in which each cell contains asingle measure value that is associated with a particular combination ofdimension keys [e.g., (time1, geography1, product1, sales) identifiesone cell; (time1, geography1, product1, units) identifies another cell],a unique row-to-cell mapping represents the location of data that isassociated with the cross-product of (time1, geography1, product1), atwhich values for multiple measures may be accessed and/or calculated. Inone embodiment, a dimension (e.g., time) of a multidimensional cube maybe structured in “embedded total” form, in which multiple levels of ahierarchy are represented in the dimensional structure (e.g., day,month, quarter, year). Hence, a row-to-cell mapping may represent thelocation of data that already is, or can be, aggregated at a certainlevel of a dimensional hierarchy (e.g., data aggregated for a month,quarter or year).

At block 206, the relational database server sends to themultidimensional database server an expression that specifies theoperation. The expression conforms to a language or format that issupported by the multidimensional server but not the relational server.For example, the relational server 106 (FIG. 1) sends the expressionfrom an OLAP_EXPRESSION or similar function to the multidimensionalserver 108 (FIG. 1). The expression specifies an operation (e.g., anOLAP DML operation) on particular multidimensional data, such as fromcube 110 (FIG. 1), which is stored according to a multidimensionalschema. The relational server does not need to “understand” (i.e.,support) the expression because the expression is passed to themultidimensional server for processing. This is because the relationalserver does not understand the structure of the multidimensional schema,only the multidimensional server does. Furthermore, the relationalserver does not support the command language of multidimensionaldatabase systems and, therefore, cannot execute such commands (e.g.,OLAP DML commands).

At block 208, the relational database server sends to themultidimensional database server the information that uniquelyidentifies the location of the particular data in the n-dimensionalobjects. For example, the relational server 106 (FIG. 1) passes therepresentations of the mappings from the row-to-cell column of theresult set 107 (FIG. 1) to the multidimensional server 108 (FIG. 1).

At block 210, the multidimensional server locates the particular data inthe n-dimensional data objects based on the information that uniquelyidentifies the location of the particular data in the n-dimensionalobjects. For example, the multidimensional server 108 uses therepresentations of the mappings from the row-to-cell column of theresult set 107 to traverse through the data structures to arrive at thelocation of the particular data on which the specified operation is tobe executed. The particular data in the n-dimensional objects may be,for example, data that is pre-aggregated along one or more levels of adimensional hierarchy, and/or may be base (i.e., unaggregated) data,which can be aggregated “on-the-fly” if necessary to respond to thedatabase statement.

The location of the particular data is at times referred to as a“dimensional offset” value, or simply the “offset”, for a cell, of themultidimensional data domain, in which the particular data is stored.The offset commonly represents a composition of key values from eachdimension associated with a given cell, which ultimately maps to alocation in memory at which data is stored, such as one or more measurevalues with which the specified operation is to be evaluated. The mannerin which the mappings, and the representations of the mappings, areimplemented is not critical and, therefore, may vary from implementationto implementation.

However, in one embodiment, the representation of the row-to-cellmapping comprises (1) information for specifying a “handle” thatidentifies a data structure that was generated for the particular queryfor the particular database session in which the mapping was generated,and (2) information for specifying the row of the result set that wasderived from values in one or more n-dimensional data objects, which canbe used to look up in the data structure the location (e.g., offset) ofthe dimensional coordinates of particular cell(s) with which theparticular data is associated and, ultimately, the location of theparticular data in memory.

At block 212, the multidimensional database server executes theoperation on the particular data in the multidimensional data domain.The specified operation, such as an OLAP DML operation, can include anyvalid manipulation of multidimensional data that returns a value. OLAPDML is a data manipulation language for performing complex analysis ofmultidimensional data in the multidimensional data domain. OLAP DMLcommands are not understood by, and therefore not directly supported by,the relational server. Non-limiting examples of such operations onmultidimensional data include aggregation, allocation, date and timeoperations, financial operations, forecasts and regressions, modeling,statistical operations, time series manipulations, numeric calculations,use of the data as variable values in formulas and functions, and thelike. Operations may be user-defined, thereby providing support forcalculation of ad-hoc custom measure values.

In one embodiment, the data on which the operation is evaluated is notstored in the result set, but is associated with a row of the resultset. In other words, a given row of the result set includes one or morevalues associated with the given dimensional coordinates to which therow maps, but does not include the particular data on which theoperation is executed. For example, a row of the result set may include(a) a value for “number of units sold” that is associated with a cellthat is identified by key values (time1, geography1, product1) ofdimensions time, geography, and product; where (b) the operationspecifies calculation of the difference between values for “sales” and“cost” that are associated with the cell that is identified by keyvalues (time1, geography1, product1), to return “profit” associated withthe cell, but where (c) “sales” and “cost” are not specified by thedatabase statement (e.g., in the OLAP_TABLE function) to be included inthe result set.

At block 214, the multidimensional server provides to the relationalserver results of the operation on the particular data. In oneembodiment, a new result set is provided that includes a valueassociated with each row of the result set 107, where each value resultsfrom execution of the operation on data associated with the row. Thedata is associated with the row because the data is associated with thedimensional coordinates (i.e., key values) from which the row wasderived. However, as discussed, the data operated upon is notnecessarily in the result set 107. Furthermore, in one embodiment, theresults of the operation are not returned and presented to therelational server in the result set 107, but are returned in a typicalrelational server row source format.

In one embodiment, there is one OLAP_EXPRESSION function for eachrespective data type: (1) OLAP_EXPRESSION; (2) OLAP_EXPRESSION_TEXT; (3)OLAP_EXPRESSION_BOOL; and (4) OLAP_EXPRESSION_DATE. Each function typeoperates similarly, with the difference between function types being thereturn data type. That is, OLAP_EXPRESSION returns a number data type;OLAP_EXPRESSION_TEXT returns a varchar2 (variable character, i.e., text)data type; OLAP_EXPRESSION_BOOL returns a Boolean data type which, inthis embodiment, is a “0” or “1”; and OLAP_EXPRESSION_DATE returns adate data type.

Hardware Overview

FIG. 3 is a block diagram that illustrates a computer system 300 uponwhich an embodiment of the invention may be implemented. Computer system300 includes a bus 302 or other communication mechanism forcommunicating information, and a processor 304 coupled with bus 302 forprocessing information. Computer system 300 also includes a main memory306, such as a random access memory (RAM) or other dynamic storagedevice, coupled to bus 302 for storing information and instructions tobe executed by processor 304. Main memory 306 also may be used forstoring temporary variables or other intermediate information duringexecution of instructions to be executed by processor 304. Computersystem 300 further includes a read only memory (ROM) 308 or other staticstorage device coupled to bus 302 for storing static information andinstructions for processor 304. A storage device 310, such as a magneticdisk, optical disk, or magneto-optical disk, is provided and coupled tobus 302 for storing information and instructions.

Computer system 300 may be coupled via bus 302 to a display 312, such asa cathode ray tube (CRT) or a liquid crystal display (LCD), fordisplaying information to a computer user. An input device 314,including alphanumeric and other keys, is coupled to bus 302 forcommunicating information and command selections to processor 304.Another type of user input device is cursor control 316, such as amouse, a trackball, or cursor direction keys for communicating directioninformation and command selections to processor 304 and for controllingcursor movement on display 312. This input device typically has twodegrees of freedom in two axes, a first axis (e.g., x) and a second axis(e.g., y), that allows the device to specify positions in a plane.

The invention is related to the use of computer system 300 forimplementing the techniques described herein. According to oneembodiment of the invention, those techniques are performed by computersystem 300 in response to processor 304 executing one or more sequencesof one or more instructions contained in main memory 306. Suchinstructions may be read into main memory 306 from anothercomputer-readable medium, such as storage device 310. Execution of thesequences of instructions contained in main memory 306 causes processor304 to perform the process steps described herein. In alternativeembodiments, hard-wired circuitry may be used in place of or incombination with software instructions to implement the invention. Thus,embodiments of the invention are not limited to any specific combinationof hardware circuitry and software.

The term “computer-readable medium” as used herein refers to any mediumthat participates in providing instructions to processor 304 forexecution. Such a medium may take many forms, including but not limitedto, non-volatile media, volatile media, and transmission media.Non-volatile media includes, for example, optical, magnetic, ormagneto-optical disks, such as storage device 310. Volatile mediaincludes dynamic memory, such as main memory 306. Transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 302. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Common forms of computer-readable media include, for example, a floppydisk, a flexible disk, hard disk, magnetic tape, or any other magneticmedium, a CD-ROM, any other optical medium, punchcards, papertape, anyother physical medium with patterns of holes, a RAM, a PROM, and EPROM,a FLASH-EPROM, any other memory chip or cartridge, a carrier wave asdescribed hereinafter, or any other medium from which a computer canread.

Various forms of computer readable media may be involved in carrying oneor more sequences of one or more instructions to processor 304 forexecution. For example, the instructions may initially be carried on amagnetic disk of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 300 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 302. Bus 302 carries the data tomain memory 306, from which processor 304 retrieves and executes theinstructions. The instructions received by main memory 306 mayoptionally be stored on storage device 310 either before or afterexecution by processor 304.

Computer system 300 also includes a communication interface 318 coupledto bus 302. Communication interface 318 provides a two-way datacommunication coupling to a network link 320 that is connected to alocal network 322. For example, communication interface 318 may be anintegrated services digital network (ISDN) card or a modem to provide adata communication connection to a corresponding type of telephone line.As another example, communication interface 318 may be a local areanetwork (LAN) card to provide a data communication connection to acompatible LAN. Wireless links may also be implemented. In any suchimplementation, communication interface 318 sends and receiveselectrical, electromagnetic or optical signals that carry digital datastreams representing various types of information.

Network link 320 typically provides data communication through one ormore networks to other data devices. For example, network link 320 mayprovide a connection through local network 322 to a host computer 324 orto data equipment operated by an Internet Service Provider (ISP) 326.ISP 326 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 328. Local network 322 and Internet 328 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 320and through communication interface 318, which carry the digital data toand from computer system 300, are exemplary forms of carrier wavestransporting the information.

Computer system 300 can send messages and receive data, includingprogram code, through the network(s), network link 320 and communicationinterface 318. In the Internet example, a server 330 might transmit arequested code for an application program through Internet 328, ISP 326,local network 322 and communication interface 318.

The received code may be executed by processor 304 as it is received,and/or stored in storage device 310, or other non-volatile storage forlater execution. In this manner, computer system 300 may obtainapplication code in the form of a carrier wave.

Extensions and Alternatives

Alternative embodiments of the invention are described throughout theforegoing description, and in locations that best facilitateunderstanding the context of the embodiments. Furthermore, the inventionhas been described with reference to specific embodiments thereof. Itwill, however, be evident that various modifications and changes may bemade thereto without departing from the broader spirit and scope of theinvention. Therefore, the specification and drawings are, accordingly,to be regarded in an illustrative rather than a restrictive sense.

In addition, in this description certain process steps are set forth ina particular order, and alphabetic and alphanumeric labels may be usedto identify certain steps. Unless specifically stated in thedescription, embodiments of the invention are not necessarily limited toany particular order of carrying out such steps. In particular, thelabels are used merely for convenient identification of steps, and arenot intended to specify or require a particular order of carrying outsuch steps.

1. A method comprising the computer-implemented steps of: receiving, ata relational database server, a relational database statement thatinvolves data, from one or more n-dimensional data objects, that isstored according to a multidimensional schema; determining, by saidrelational database server, that said statement requires an operation onparticular data from said n-dimensional data objects; sending, from saidrelational database server to a multidimensional database server, anexpression that specifies said operation; wherein said relationaldatabase statement conforms to a first language supported by saidrelational database server; wherein said expression conforms to a secondlanguage supported by said multidimensional database server and notsupported by said relational database server; based on said expression,executing, by said multidimensional database server, said operation onsaid particular data; and providing to said relational database server,by said multidimensional database server and in response to saidrelational database statement, a set of one or more values resultingfrom execution of said operation on said particular data.
 2. The methodof claim 1, further comprising the computer-implemented step of:sending, from said relational database server to said multidimensionaldatabase server, information that uniquely identifies the location ofsaid particular data in said n-dimensional data objects.
 3. The methodof claim 2, further comprising the computer-implemented step of:locating, by said multidimensional database server and based on saidinformation that uniquely identifies the location of said particulardata, said particular data in said n-dimensional data objects.
 4. Themethod of claim 2, further comprising the computer-implemented step of:identifying by said relational database server, from a first functionincluded in said statement, a column of a result set that is generatedby execution of a second function included in said statement; andaccessing by said relational database server, from said column, saidinformation that uniquely identifies the location of said particulardata in said n-dimensional data objects.
 5. The method of claim 4,further comprising the computer-implemented step of: generating, by saidmultidimensional database server, said information that uniquelyidentifies the location of said particular data.
 6. The method of claim5, further comprising the computer-implemented step of: generating, bysaid multidimensional database server, said result set.
 7. The method ofclaim 4, wherein the step of providing said set comprises returning avalue associated with each row of said result set that is generated bysaid second function, wherein each value results from execution of saidoperation on data, of said particular data, associated with said row. 8.The method of claim 1, wherein said first language is the StructuredQuery Language (SQL).
 9. The method of claim 1, wherein said set ofvalues includes a numeric value.
 10. The method of claim 1, wherein saidset of values includes a character value.
 11. The method of claim 1,wherein said set of values includes a numeric Boolean value.
 12. Themethod of claim 1, wherein said set of values includes a date value. 13.A computer-readable medium carrying one or more sequences ofinstructions which, when executed by one or more processors, causes theone or more processors to perform the method recited in claim
 1. 14. Acomputer-readable medium carrying one or more sequences of instructionswhich, when executed by one or more processors, causes the one or moreprocessors to perform the method recited in claim
 2. 15. Acomputer-readable medium carrying one or more sequences of instructionswhich, when executed by one or more processors, causes the one or moreprocessors to perform the method recited in claim
 3. 16. Acomputer-readable medium carrying one or more sequences of instructionswhich, when executed by one or more processors, causes the one or moreprocessors to perform the method recited in claim
 4. 17. Acomputer-readable medium carrying one or more sequences of instructionswhich, when executed by one or more processors, causes the one or moreprocessors to perform the method recited in claim
 5. 18. Acomputer-readable medium carrying one or more sequences of instructionswhich, when executed by one or more processors, causes the one or moreprocessors to perform the method recited in claim
 6. 19. Acomputer-readable medium carrying one or more sequences of instructionswhich, when executed by one or more processors, causes the one or moreprocessors to perform the method recited in claim
 7. 20. Acomputer-readable medium carrying one or more sequences of instructionswhich, when executed by one or more processors, causes the one or moreprocessors to perform the method recited in claim
 8. 21. A methodcomprising the computer-implemented steps of: receiving, at a relationaldatabase server, a relational database statement that involves data,from one or more n-dimensional data objects, that is stored according toa multidimensional schema; and in response to said statement, sending,from a multidimensional database server to said relational databaseserver, information about where said data is stored in said one or moren-dimensional data objects.
 22. The method of claim 21, wherein the stepof sending includes sending said information in a column of a result setgenerated by said multidimensional database server.
 23. Acomputer-readable medium carrying one or more sequences of instructionswhich, when executed by one or more processors, causes the one or moreprocessors to perform the method recited in claim
 21. 24. Acomputer-readable medium carrying one or more sequences of instructionswhich, when executed by one or more processors, causes the one or moreprocessors to perform the method recited in claim
 22. 25. An apparatuscomprising: means for receiving, at a relational database server, arelational database statement that involves data, from one or moren-dimensional data objects, that is stored according to amultidimensional schema; wherein said relational database statementconforms to a first language supported by said relational databaseserver; means for determining, by said relational database server, thatsaid statement requires an operation on particular data from saidn-dimensional data objects; means for sending, from said relationaldatabase server to a multidimensional database server, an expressionthat specifies said operation; wherein said expression conforms to asecond language supported by said multidimensional database server andnot supported by said relational database server; means for executing,by said multidimensional database server and based on said expression,said operation on said particular data; and means for providing to saidrelational database server, by said multidimensional database server andin response to said relational database statement, a set of one or morevalues resulting from execution of said operation on said particulardata.